// main.cpp : Defines the entry point for the console application.
//
#include "log.h"

int main(int argc, char* argv[])
{
    FILELog::ReportingLevel() = FILELog::FromString(argv[1] ? argv[1] : "WARNING");

	FILE_LOG(logDEBUG) << "Start Testing....";

	int ret = 0;
	int Test_I01_TemplateTypeDeduction(int, char**);
	ret += Test_I01_TemplateTypeDeduction(argc, argv);
    int Test_I02_AutoTypeDeduction(int, char**);
    ret += Test_I02_AutoTypeDeduction(argc, argv);
    int Test_I03_Understand_decltype(int, char**);
    ret += Test_I03_Understand_decltype(argc, argv);
    int Test_I05_PreferAutoToExplicitType(int, char**);
    ret += Test_I05_PreferAutoToExplicitType(argc, argv);
    int Test_I06_ProgramOfAuto(int, char**);
    ret += Test_I06_ProgramOfAuto(argc, argv);
	int Test_I07_initializerFormat(int, char**);
	ret += Test_I07_initializerFormat(argc, argv);
	int Test_I08_PreferNullptrTo0_NULL(int, char**);
	ret += Test_I08_PreferNullptrTo0_NULL(argc, argv);
	int Test_I09_PreferAliasToTypedef(int, char**);
	ret += Test_I09_PreferAliasToTypedef(argc, argv);
	int Test_I10_PreferScopedEnumsToUnscoped(int, char**);
	ret += Test_I10_PreferScopedEnumsToUnscoped(argc, argv);
	int Test_I11_PreferDeletedFunctionsToPrivateUndefinedOnes(int, char**);
	ret += Test_I11_PreferDeletedFunctionsToPrivateUndefinedOnes(argc, argv);
	int Test_I12_DeclareOverridingFunctionsOverride(int, char**);
	ret += Test_I12_DeclareOverridingFunctionsOverride(argc, argv);
	int Test_I13_PreferConst_iteratorToIterator(int, char**);
	ret += Test_I13_PreferConst_iteratorToIterator(argc, argv);
	int Test_I14_UerConstexpr(int, char**);
	ret += Test_I14_UerConstexpr(argc, argv);
	int Test_I15_MakeConstMemberFunctionsThreadSafe(int, char**);
	ret += Test_I15_MakeConstMemberFunctionsThreadSafe(argc, argv);
	int Test_I16_DeclareFunctionsNoexcept(int, char**);
	ret += Test_I16_DeclareFunctionsNoexcept(argc, argv);
	int Test_I17_ConsiderPassByValueOnSomeConditions(int, char**);
	ret += Test_I17_ConsiderPassByValueOnSomeConditions(argc, argv);
	int Test_I18_ConsiderEmplacementInsteadOfInsertion(int, char**);
	ret += Test_I18_ConsiderEmplacementInsteadOfInsertion(argc, argv);
	int Test_I19_SpecialMemberFunctionGeneration(int, char**);
	ret += Test_I19_SpecialMemberFunctionGeneration(argc, argv);

	return 0;
}

